package protect.week10;

import java.util.HashSet;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/10/26 22:18
 * @package protect.week10
 * @description 1935. 可以输入的最大单词数
 * 键盘出现了一些故障，有些字母键无法正常工作。而键盘上所有其他键都能够正常工作。
 * <p>
 * 给你一个由若干单词组成的字符串 text ，单词间由单个空格组成（不含前导和尾随空格）；另有一个字符串 brokenLetters ，由所有已损坏的不同字母键组成，返回你可以使用此键盘完全输入的 text 中单词的数目。
 * <p>
 *  
 * <p>
 * 示例 1：
 * <p>
 * 输入：text = "hello world", brokenLetters = "ad"
 * 输出：1
 * 解释：无法输入 "world" ，因为字母键 'd' 已损坏。
 * 示例 2：
 * <p>
 * 输入：text = "leet code", brokenLetters = "lt"
 * 输出：1
 * 解释：无法输入 "leet" ，因为字母键 'l' 和 't' 已损坏。
 * 示例 3：
 * <p>
 * 输入：text = "leet code", brokenLetters = "e"
 * 输出：0
 * 解释：无法输入任何单词，因为字母键 'e' 已损坏。
 *  
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/maximum-number-of-words-you-can-type
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

public class Ch01_CanBeTypedWords {
    public int canBeTypedWords(String text, String brokenLetters) {
        HashSet<Character> errorSet = new HashSet<>();
        for (int i = 0; i < brokenLetters.length(); i++) {
            errorSet.add(brokenLetters.charAt(i));
        }

        // 切割单词
        String[] words = text.split(" ");
        int count = 0;
        for (String word : words) {
            boolean flag = true;
            for (int i = 0; i < word.length(); i++) {
                if (errorSet.contains(word.charAt(i))) {
                    flag = false;
                }
            }
            if (flag){
                count ++;
            }
        }

        return count;

    }
}
